package com.dglg.spring.dao;

import com.dglg.spring.model.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.ArrayList;
import java.util.List;

@Mapper
public interface TrainingClassDao {

    // 根据学号查找学生所在的实训班信息
    List<TrainingClass> getTrainingClass(@Param("studentId") String studentId);

    // 查询所有实训班
    List<String> getTrainClass();

    // 根据实训班查询实训小组
    List<String> getGroupByClass(@Param("className") String className);

    // 根据实训班级名称和小组名称查询学生学号
    List<String> getStudentIdByCP(@Param("className") String className, @Param("groupName") String groupName);

    //根据实训班名称查找教师信息
    List<Teacher> getTeacherByClass(@Param("className") String className);

    // 根据实训班名称和学号查找项目信息
    List<TrainingClass> getProject(@Param("className") String className, @Param("studentId") String studentId);

    // 根据学号和实训班名称查找学生日志信息
    List<StudentLog> getStudentLog(@PathVariable("studentId") String studentId, @PathVariable("className") String className);

    // 根据学生姓名搜索实训班学生信息
    List<Student> getTrainingStudent(@Param("studentName") String studentName);

    // 根据学号和实训班级查找该学生所在实训小组
    List<TrainingStudent> getGroupByIdClass(@Param("studentId") String studentId, @Param("className") String className);

    // 根据学号查找小组信息
    List<TrainingGroup> getGroupById(@Param("studentId") String studentId);

    // 根据教师电话获取教师信息
    List<Teacher> getTeacherByPhone(@Param("phone") String phone);

    // 查询教师信息
    List<Teacher> getTeacher();

    // 查询专家信息
    List<Expert> getExpert();

    // 查询所有小组名字
    List<String> getGroup();

    // 查询实训班详细信息
    List<TrainingClass> getTrainingClassAll();

    // 根据教师电话号码查询实训班学生信息
    List<TrainingStudent> getStudentByPhone(@Param("phone") String phone);

    // 根据日期获取日志信息(获取某一天的日志信息)
    List<StudentLog> getOneByLogDate(@Param("logDate") String logDate);

    // 获取实训班小组的专家评分
    List<String> getScoreMessage();

    // 根据教师电话号码和学生姓名查询实训班学生信息
    List<TrainingStudent> queryStudentByPhoneAndName(@Param("phone") String phone,@Param("name") String name);

    // 根据教师电话号码查询实训班小组信息
    List<TrainingGroup> queryGroupByPhoneAndName(@Param("phone") String phone, @Param("name") String name);

    // 根据实训班名称和学号更新评价信息
    int updateComment(@Param("className") String className, @Param("studentId") String studentId);

    // 根据实训班学生信息更新该学生项目分工
    int updateDivision(@Param("trainingStudent") TrainingStudent trainingStudent);

    // 根据学生日志相关信息更新日志
    int updateLog(@Param("studentLog") StudentLog studentLog);

    // 根据实训班名称和教师名字更新实训班信息
    int updateClass(@Param("className") String className, @Param("teacherName") String teacherName);

    // 根据实训班名称和教师名字更新教师信息
    int updateTeacher(@Param("className") String className, @Param("teacherName") String teacherName);

    // 添加评价信息
    int insert(@Param("teachComment") TeachComment teachComment);

    // 添加教师信息
    int insertTeacher(@Param("teacher") Teacher teacher);

    // 添加用户账号信息
    int insertUser(@Param("user") User user);

    // 添加实训班信息
    int insertClass(@Param("trainingClass") TrainingClass trainingClass);

    // 添加实训班学生
    int insertTrainingStu(@Param("className") String className, @Param("studentId") String studentId);

    // 新增专家信息
    int insertExpert(@Param("expert") Expert expert);

    // 新增实训班
    int insertClassByName(@Param("className") String className, @Param("teacherName") String teacherName);

    // 根据实训班名称和学号删除学生信息
    int deleteTrainingStu(@Param("className") String className, @Param("studentId") String studentId);

    // 根据学号删除学生信息
    int deleteStudent(@Param("studentId") String studentId);

    // 根据实训班名称删除实训班信息
    int deleteClass(@Param("className") String className);

    // 根据手机号删除专家信息
    int deleteExpert(@Param("phone") String phone);

    // 根据实训班名称删除其教师
    int deleteTeacher(@Param("className") String className);

    // 根据实训班名称更新教师表
    int deleteTeacher2(@Param("className") String className);

    // 根据学号和班级删除实训班学生信息
    int deleteTrainStu(@Param("className") String className, @Param("studentId") String studentId);
}
